package com.gelsanalyzer.business;

// Generated Feb 21, 2008 12:27:19 AM by Hibernate Tools 3.2.0.CR1

import java.util.List;
import javax.naming.InitialContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.LockMode;
import org.hibernate.SessionFactory;
import static org.hibernate.criterion.Example.create;

/**
 * Home object for domain model class Goalarea.
 * @see com.gelsanalyzer.business.Goalarea
 * @author Hibernate Tools
 */
public class GoalareaHome {

    private static final Log log = LogFactory.getLog(GoalareaHome.class);

    private final SessionFactory sessionFactory = getSessionFactory();

    protected SessionFactory getSessionFactory() {
        try {
            return (SessionFactory) new InitialContext()
                .lookup("SessionFactory");
        } catch ( Exception e ) {
            log.error("Could not locate SessionFactory in JNDI", e);
            throw new IllegalStateException(
                "Could not locate SessionFactory in JNDI");
        }
    }

    public void persist(Goalarea transientInstance) {
        log.debug("persisting Goalarea instance");
        try {
            sessionFactory.getCurrentSession().persist(transientInstance);
            log.debug("persist successful");
        } catch ( RuntimeException re ) {
            log.error("persist failed", re);
            throw re;
        }
    }

    public void attachDirty(Goalarea instance) {
        log.debug("attaching dirty Goalarea instance");
        try {
            sessionFactory.getCurrentSession().saveOrUpdate(instance);
            log.debug("attach successful");
        } catch ( RuntimeException re ) {
            log.error("attach failed", re);
            throw re;
        }
    }

    public void attachClean(Goalarea instance) {
        log.debug("attaching clean Goalarea instance");
        try {
            sessionFactory.getCurrentSession().lock(instance, LockMode.NONE);
            log.debug("attach successful");
        } catch ( RuntimeException re ) {
            log.error("attach failed", re);
            throw re;
        }
    }

    public void delete(Goalarea persistentInstance) {
        log.debug("deleting Goalarea instance");
        try {
            sessionFactory.getCurrentSession().delete(persistentInstance);
            log.debug("delete successful");
        } catch ( RuntimeException re ) {
            log.error("delete failed", re);
            throw re;
        }
    }

    public Goalarea merge(Goalarea detachedInstance) {
        log.debug("merging Goalarea instance");
        try {
            Goalarea result = (Goalarea) sessionFactory.getCurrentSession()
                .merge(detachedInstance);
            log.debug("merge successful");
            return result;
        } catch ( RuntimeException re ) {
            log.error("merge failed", re);
            throw re;
        }
    }

    public Goalarea findById(java.lang.String id) {
        log.debug("getting Goalarea instance with id: " + id);
        try {
            Goalarea instance = (Goalarea) sessionFactory.getCurrentSession()
                .get("com.gelsanalyzer.business.Goalarea", id);
            if ( instance == null ) {
                log.debug("get successful, no instance found");
            } else {
                log.debug("get successful, instance found");
            }
            return instance;
        } catch ( RuntimeException re ) {
            log.error("get failed", re);
            throw re;
        }
    }

    public List<Goalarea> findByExample(Goalarea instance) {
        log.debug("finding Goalarea instance by example");
        try {
            List<Goalarea> results = (List<Goalarea>) sessionFactory
                .getCurrentSession().createCriteria(
                    "com.gelsanalyzer.business.Goalarea").add(create(instance))
                .list();
            log.debug("find by example successful, result size: "
                    + results.size());
            return results;
        } catch ( RuntimeException re ) {
            log.error("find by example failed", re);
            throw re;
        }
    }
}
